
from rest_framework import serializers

from apps.users.models import User


class AdminSerializer(serializers.ModelSerializer):
    """获取管理员用户列表数据序列化器"""
    class Meta:
        model = User
        fields = "__all__"
        # 因为牵扯有密码，所以password要做处理
        extra_kwargs={
            "password":{
                "write_only":True
            }
        }
    # 重写父类方法，增加管理员权限属性
    def create(self, validated_data):
        # 调用父类方法创建管理员用户
        admin = super().create(validated_data)
        # 用户密码加密
        password = validated_data["password"]
        admin.set_password(password)
        # 设置管理员身份
        admin.is_staff = True
        # 保存数据
        admin.save()
        # 返回响应
        return admin

    # 重写父类，修改管理员权限
    def update(self, instance, validated_data):
        # 调用父类实现数据更新
        super().update(instance,validated_data)
        # 获取密码，并进行判断是否修改了密码
        password = validated_data.get("password")
        if password is None:
            instance.set_password(password)
            instance.save()

        # 返回响应
        return instance


